package com.study.jdbc.datasource;

import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.SQLFeatureNotSupportedException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;

import javax.sql.DataSource;

import com.study.jdbc.utils.DBUtil;
import com.study.jdbc.wrapper.MyConnection;

/**
* @Name: MyDataSource
* @Description: 自定义标准数据源
* @Author: 李超	lc_jack@foxmail.com
* @CreateDate: 2017-2-18 上午10:40:22 
* @Version: V1.0
 */
public class MyDataSource implements DataSource {
	
	//数据库连接池
	private static List<Connection> pool = new ArrayList<Connection>() ;
	
	//连接池大小
	private static final int POOLSIZE = 10 ;
	
	static {
		for (int i = 0; i < POOLSIZE; i++) {
			Connection con = DBUtil.getConnection() ;
			pool.add(con) ;
		}
	}
	
	@Override
	public synchronized Connection getConnection() throws SQLException {
		if(pool.size() > 0) {
			Connection con = pool.remove(0) ;
			Connection myCon = new MyConnection(con, pool) ;
			return myCon ;
		} else {
			throw new RuntimeException("对不起，数据库连接获取失败！") ;
		}
	}

	@Override
	public PrintWriter getLogWriter() throws SQLException {
		return null;
	}

	@Override
	public void setLogWriter(PrintWriter out) throws SQLException {
		
	}

	@Override
	public void setLoginTimeout(int seconds) throws SQLException {
		
	}

	@Override
	public int getLoginTimeout() throws SQLException {
		return 0;
	}

	@Override
	public Logger getParentLogger() throws SQLFeatureNotSupportedException {
		return null;
	}

	@Override
	public <T> T unwrap(Class<T> iface) throws SQLException {
		return null;
	}

	@Override
	public boolean isWrapperFor(Class<?> iface) throws SQLException {
		return false;
	}

	@Override
	public Connection getConnection(String username, String password)
			throws SQLException {
		return null;
	}

}
